Index: main/kernel/resources/js/Ametys/data/ServerComm.i18n.js =================================================================== --- main/kernel/resources/js/Ametys/data/ServerComm.i18n.js (revision 28600) +++ main/kernel/resources/js/Ametys/data/ServerComm.i18n.js (working copy) @@ -253,7 +253,7 @@ if (Ext.isObject(oldMessage.waitMessage)) { - oldMessage.waitMessage.hide(); + oldMessage.bodyMasked ? Ext.getBody().unmask() : oldMessage.waitMessage.hide(); } } } @@ -298,12 +298,20 @@ } if (Ext.isObject(message.waitMessage)) { - message.waitMessage = Ext.applyIf(message.waitMessage, { - target: Ext.getBody() - }); - - message.waitMessage = Ext.create("Ext.LoadMask", message.waitMessage); - message.waitMessage.show(); + if (!message.waitMessage.target && Ext.ComponentQuery.query('viewport').length == 0) + { + message.waitMessage = Ext.getBody().mask (message.waitMessage.msg || "<i18n:text i18n:key='KERNEL_LOADMASK_DEFAULT_MESSAGE' i18n:catalogue='kernel'/>", message.waitMessage.msgCls); + message.bodyMasked = true; + } + else + { + message.waitMessage = Ext.applyIf(message.waitMessage, { + target: Ext.ComponentQuery.query('viewport')[0] + }); + + message.waitMessage = Ext.create("Ext.LoadMask", message.waitMessage); + message.waitMessage.show(); + } } } @@ -657,7 +665,7 @@ var message = options.messages[i]; if (Ext.isObject(message.waitMessage)) { - message.waitMessage.hide(); + message.bodyMasked ? Ext.getBody().unmask() : message.waitMessage.hide(); } } }, Index: main/plugin-core/i18n/messages_en.xml =================================================================== --- main/plugin-core/i18n/messages_en.xml (revision 28600) +++ main/plugin-core/i18n/messages_en.xml (working copy) @@ -44,6 +44,7 @@ <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_HELP">Help</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_HELP_TEXT">This screen allows you to change the application's configuration.<br/><br/>Navigate through the top-right hand corner tabs and change the parameters' values.<br/><br/>The application will be automatically restarted after the changes are saved.</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_OK">The configuration has been correctly updated</message> + <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_WAIT_MSG">Saving. Please wait ...</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_FATALERROR">Server is not responding or a fatal error occurred during saving.\nConsult applications and servlet engines logfiles for more details.</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_ERROR">An error occurred on the server and parameters have not been updated.\n\nInternal error message is :\n</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_INVALID_TITLE">The form contains errors</message> Index: main/plugin-core/i18n/messages_fr.xml =================================================================== --- main/plugin-core/i18n/messages_fr.xml (revision 28600) +++ main/plugin-core/i18n/messages_fr.xml (working copy) @@ -44,6 +44,7 @@ <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_HELP">Aide</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_HELP_TEXT">Cet écran vous permet de modifier la configuration système de l'application.<br/><br/>Naviguez en utilisant les onglets et modifiez les valeurs des paramètres.<br/><br/>Lorsque vous enregistrez les modifications, l'application sera redémarrée automatiquement pour prendre les modifications en compte.</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_OK">La configuration a été sauvée correctement</message> + <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_WAIT_MSG">Sauvegarde en cours.<br/>Veuillez patienter ...</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_FATALERROR">Le serveur ne répond pas ou une erreur grave est survenue lors de la sauvegarde.\nConsultez les journaux de l'application et du moteur de servlet pour plus de détails.</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_ERROR">Une erreur est survenue sur le serveur et les paramètres n'ont pas été sauvegardés.\n\nLe message d'erreur interne est :\n</message> <message key="PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_INVALID_TITLE">Le formulaire contient des erreurs</message> Index: main/plugin-core/resources/js/Ametys/plugins/core/administration/Config.i18n.js =================================================================== --- main/plugin-core/resources/js/Ametys/plugins/core/administration/Config.i18n.js (revision 28753) +++ main/plugin-core/resources/js/Ametys/plugins/core/administration/Config.i18n.js (working copy) @@ -1914,7 +1914,7 @@ { if (mask) { - new Ext.LoadMask({target: Ext.getBody()}).show(); + Ext.getBody().mask(); } document.location.href = Ametys.WORKSPACE_URI; }, @@ -1967,23 +1967,20 @@ { if (btn == 'yes') { - me.save._mask = new Ext.LoadMask({target: Ext.getBody()}); - me.save._mask.show(); + Ext.getBody().mask("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_WAIT_MSG'/>"); Ext.defer(me._save2, 1, me); } else if (btn == 'no') { - me.save._mask = new Ext.LoadMask({target: Ext.getBody()}); - me.save._mask.show(); - me._check(me._paramCheckers, true, Ext.bind(function(success) { this.save._mask.hide(); if (success) { this.save(); } } , me), false); + Ext.getBody().mask("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_WAIT_MSG'/>"); + me._check(me._paramCheckers, true, Ext.bind(function(success) { Ext.getBody().unmask(); if (success) { this.save(); } } , me), false); } } }); return; } - me.save._mask = new Ext.LoadMask({target: Ext.getBody()}); - me.save._mask.show(); + Ext.getBody().mask("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_CONFIG_SAVE_WAIT_MSG'/>"); Ext.defer(me._save2, 1, me); }, @@ -2029,7 +2026,7 @@ ex = e; } - this.save._mask.hide(); + Ext.getBody().unmask(); if (result == null) { Index: main/plugin-core/resources/js/Ametys/plugins/core/administration/Logs.i18n.js =================================================================== --- main/plugin-core/resources/js/Ametys/plugins/core/administration/Logs.i18n.js (revision 28600) +++ main/plugin-core/resources/js/Ametys/plugins/core/administration/Logs.i18n.js (working copy) @@ -357,8 +357,7 @@ } else { - this._mask = new Ext.LoadMask({target: Ext.getBody()}); - this._mask.show(); + Ext.getBody().mask("<i18n:text i18n:key='KERNEL_LOADMASK_DEFAULT_MESSAGE' i18n:catalogue='kernel'/>"); var args = { level: level, category: selectedNode.get('fullname') }; Ametys.data.ServerComm.send({ @@ -386,7 +385,7 @@ var args = argsArray[0]; var selectedNode = argsArray[1]; - this._mask.hide(); + Ext.getBody().unmask(); if (Ametys.data.ServerComm.handleBadResponse("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_LOGS_HANDLE_ERROR'/>", response, "org.ametys.administration.Groups._selectGroup")) { Index: main/plugin-core/resources/js/Ametys/plugins/core/administration/Plugins.i18n.js =================================================================== --- main/plugin-core/resources/js/Ametys/plugins/core/administration/Plugins.i18n.js (revision 28600) +++ main/plugin-core/resources/js/Ametys/plugins/core/administration/Plugins.i18n.js (working copy) @@ -53,10 +53,6 @@ * @private * @property {Ext.tree.Panel} _tree3 The workspace tree */ - /** - * @private - * @property {Ext.LoadMask} _mask A mak when saving changes and reloading - */ /** * @readonly @@ -524,8 +520,7 @@ responseType: null }); - this._mask = new Ext.LoadMask({target: Ext.getBody()}); - this._mask.show(); + Ext.getBody().mask("<i18n:text i18n:key='KERNEL_LOADMASK_DEFAULT_MESSAGE' i18n:catalogue='kernel'/>"); }, /** @@ -535,17 +530,16 @@ */ _changesNowCB: function(response) { - this._mask.hide(); + Ext.getBody().unmask(); if (Ametys.data.ServerComm.handleBadResponse("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_PLUGINS_CHANGES_ERROR'/>", response, "Ametys.plugins.core.administration.Plugins._changesNowCB")) { return; } - alert("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_PLUGINS_CHANGES_DONE'/>"); + Ext.Msg.alert("<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_PLUGINS_CHANGES'/>", "<i18n:text i18n:key='PLUGINS_CORE_ADMINISTRATOR_PLUGINS_CHANGES_DONE'/>"); - this._mask = new Ext.LoadMask({target: Ext.getBody()}); - this._mask.show(); + Ext.getBody().mask("<i18n:text i18n:key='KERNEL_LOADMASK_DEFAULT_MESSAGE' i18n:catalogue='kernel'/>"); // Restart Ext.Ajax.request({url: Ametys.getPluginDirectPrefix(this.pluginName) + "/administrator/restart", params: "", async: false}); Index: main/workspace-admin/pages/common/common.xsl =================================================================== --- main/workspace-admin/pages/common/common.xsl (revision 28600) +++ main/workspace-admin/pages/common/common.xsl (working copy) @@ -128,12 +128,14 @@ launch: function() { var items = []; - var toping = createTop(); - if (toping != null) - { - items.push(Ext.apply(toping, {region: 'north'})); - } - items.push(Ext.apply(createPanel(), {region: 'center'})); + + var toping = createTop(); + if (toping != null) + { + items.push(Ext.apply(toping, {region: 'north'})); + } + + items.push(Ext.apply(createPanel(), {region: 'center'})); var mainPanel = Ext.create('Ext.panel.Panel', { autoScroll: false, @@ -156,8 +158,8 @@ this.setSize(Ext.get('main').getSize(true)) }, mainPanel); - createDock(); - + createDock(); + createBottom(); if (typeof appReady == "function")